<?php
namespace app\wap\controller;

use app\BaseController;
use think\facade\View;

// GatewayClient 3.0.0版本开始要使用命名空间
use GatewayClient\Gateway;

//  学习GatewayClient 需要先运行 start_for_win.bat
class Qq extends BaseController
{

    // 学习即时通讯
    public function qq(){
        $uid   = input('param.uid', 0); // uid
        $c_uid = input('param.c_uid');         // 客户ID

        View::assign('uid',   $uid);
        View::assign('c_uid', $c_uid);
        return view();
    }

    // 绑定 客户 client_id
    public function bind(){
        // 假设用户已经登录，用户uid和群组id在session中
        $uid       = input('param.uid');       // uid
        $c_uid     = input('param.c_uid');     // 客户ID
        $client_id = input('param.client_id'); // uid 的ID

        // 设置GatewayWorker服务的Register服务ip和端口，请根据实际情况改成实际值(ip不能是0.0.0.0)
        Gateway::$registerAddress = '127.0.0.8:8282'; // todo 这行必须写，否则发不出去 js报utf-8错误，虽然框架中已经定义过了
        Gateway::bindUid($client_id, $uid);        // client_id与uid绑定
        // Gateway::joinGroup($client_id, 2);      // 加入某个群组（可调用多次加入多个群组）
        // var_dump(Gateway::isUidOnline($uid));   // 判断是否在线

        $on_line = Gateway::getClientIdByUid($uid);// 查看在线人数

        return json(['client_id'=>$client_id, 'uid'=>$uid, 'c_uid'=>$c_uid, 'on_line'=>$on_line]);
    }

    // 接收消息，然后发出去
    public function send(){
        $client_id = input('param.client_id');
        $uid       = input('param.uid');
        $c_uid     = input('param.c_uid');
        $message   = input('param.message');
        $msg       = json_encode(['type'=>'message', 'message'=>$message]);

        // 设置GatewayWorker服务的Register服务ip和端口，请根据实际情况改成实际值(ip不能是0.0.0.0)
        Gateway::$registerAddress = '127.0.0.8:8282'; // todo 这行必须写，否则发不出去 js报utf-8错误，虽然框架中已经定义过了
        // 向任意uid的网站页面发送数据
        Gateway::sendToUid($uid, $msg);
        // 向任意群组的网站页面发送数据
        // Gateway::sendToGroup($group_id, "我是QQ");

        return json(['client_id'=>$client_id, 'type'=>'message']);
    }

}